﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using DAL;
using DAL.Models;
using BAL;
using BAL.Interfaces;
using BibliotecaVirtual.Models;

namespace BibliotecaVirtual.Controllers
{
    [Authorize(Roles = Libreria.Constantes.ADMINISTRADOR)]
    public class UsuarioSociosController : Controller
    {
        private IUsuarioSocioService BALUsuarioSocio = null;
        private ISociosService BALSocios = null;

        public UsuarioSociosController(IUsuarioSocioService UsuarioSocioService,
                                       ISociosService SociosService)
        {
            BALUsuarioSocio = UsuarioSocioService;
            BALSocios = SociosService;
        }

        //
        // GET: /Socios/

        public ViewResult Index()
        {
            List<UsuarioSocios> usuariossocios = BALUsuarioSocio.GetAllValidados().ToList();
            return View(usuariossocios);
        }

        //
        // GET: /Socios/Details/5

        public ViewResult Details(long id)
        {
            object[] keys = new object[1] { id };
            return View(BALUsuarioSocio.Find(keys));
        }

        //
        // GET: /Socios/Create

        public ActionResult Create()
        {
            cargarDatos(null);
            return View();
        }

        //public ActionResult CreateConDatos(String Email)
        //{
        //    ViewBag.SocioId = new SelectList(BALSocios.GetAll(), "id", "Nombre");
        //    ViewBag.UserId = new SelectList(Membership.GetAllUsers(), "Email", "Email", Email);
        //    return View();
        //}

        //[HttpPost]
        //public ActionResult CreateConDatos(UsuarioSocios usuariosocio)
        //{
        //    return Create(usuariosocio);
        //} 

        //
        // POST: /Socios/Create

        [HttpPost]
        public ActionResult Create(UsuarioSocios item)
        {
            if (ModelState.IsValid)
            {
                BALUsuarioSocio.Create(item);
                Roles.AddUserToRole(item.aspnet_Users.UserName, Libreria.Constantes.SOCIO);
                return RedirectToAction("Index");  
            }
            ViewBag.SocioId = new SelectList(BALSocios.GetAll(), "id", "Nombre", item.Socios.id); // SocioId por Socios.id
            return View(item);
        }
        
        //
        // GET: /Socios/Edit/5
 
        public ActionResult Edit(long id)
        {
            UsuarioSocios item;
            object[] keys = new object[1] { id };
            item = BALUsuarioSocio.Find(keys);
            cargarDatos(item);
            return View(item);
        }

        //
        // POST: /Socios/Edit/5

        [HttpPost]
        public ActionResult Edit(UsuarioSocios item)
        {
            if (ModelState.IsValid)
            {
                //item = BALUsuarioSocio.GetValidado(item);
                BALUsuarioSocio.Edit(item);
                return RedirectToAction("Index");
            }
            ViewBag.SocioId = new SelectList(BALSocios.GetAll(), "id", "Nombre", item.Socios.id); //SocioId por Socios.id
            return View(item);
        }

        //
        // GET: /Socios/Delete/5
 
        public ActionResult Delete(long id)
        {
            object[] keys = new object[1] { id };
            return View(BALUsuarioSocio.Find(keys));
        }

        //
        // POST: /Socios/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(long id)
        {
            object[] keys = new object[1] { id };
            UsuarioSocios item = BALUsuarioSocio.Find(keys);
            BALUsuarioSocio.Remove(item);
            return RedirectToAction("Index");
        }

        protected void cargarDatos(UsuarioSocios item)
        {
            try
            {
                if (item != null)
                {
                    ViewBag.SocioId = new SelectList(BALSocios.GetAll(), "id", "Nombre", item.Socios.id); //SocioId por Socios.id
                    ViewBag.UserId = new SelectList(Membership.GetAllUsers(), "ProviderUserKey", "Username", item.aspnet_Users.UserId); //UserId por aspnet_Users.UserId
                }
                else
                {
                    ViewBag.SocioId = new SelectList(BALSocios.GetAll(), "id", "Nombre");
                    ViewBag.UserId = new SelectList(Membership.GetAllUsers(), "ProviderUserKey", "Username");
                }
            }
            catch (Exception ex)
            {

            }
        }
    }
}